home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
MATHEMAT
/
STATISTI
/
0850B.ZIP
/
SET2.ARC
/
BISERIAL.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1979-12-31
|
5KB
|
212 lines
VAR SWITCH14,SWITCH4,DF,I,NUMSAMPS:INTEGER;
SWITCH13,SWITCH3,C:CHAR;
XY,SAMPLE1,SAMPLE2,COEFF,XT,XS,YS,YT,T1,T2,T3:REAL;
TEMP,Y,SWITCH:INTEGER;
XCOOR,YCOOR,SUMX,SUMY,SUMXSQR,SUMYSQR, SUMXTIMESY,
A1,A2,A3,A4,L,X,FACTOR1,FACTOR2,RIGHTTAIL,TVALUE,CRIT52,CRIT51,CRIT12,CRIT11:REAL;
SWITCH2,LESSTHANONE:BOOLEAN;
{$I B:REALRAIS}
{$I B:INTRAISE}
PROCEDURE FINDCRITICALVALUES (DEGFREE:INTEGER);
VAR TEMP1,TEMP2:REAL;
PROCEDURE VALS(C52,C51,C12,C11:REAL);
BEGIN
CRIT52:=C52;
CRIT51:=C51;
CRIT12:=C12;
CRIT11:=C11;
END;
PROCEDURE LOOKUP (DF:INTEGER);
BEGIN
CASE DF OF
1: VALS(0.988, 0.997, 0.9995, 0.9999);
2: VALS(0.900, 0.950, 0.980, 0.990);
3: VALS(0.805, 0.878, 0.934, 0.959);
4: VALS(0.729, 0.811, 0.882, 0.917);
5: VALS(0.669, 0.754, 0.833, 0.874);
6: VALS(0.622, 0.707, 0.789, 0.824);
7: VALS(0.582, 0.666, 0.750, 0.798);
8: VALS(0.549, 0.632, 0.716, 0.765);
9: VALS(0.512, 0.602, 0.685, 0.735);
10: VALS(0.497, 0.576, 0.658, 0.708);
END;
END;
BEGIN
LOOKUP (DEGFREE);
IF NUMSAMPS<12 THEN BEGIN
WRITE ('THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ');
WRITELN (CRIT52:5:4);
WRITE ('THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ');
WRITELN (CRIT51:5:4);
WRITE ('THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ');
WRITELN (CRIT12:5:4);
WRITE ('THE CRITICAL VALUE AT .01 (TWO TAILED IS: ');
WRITELN (CRIT11:5:4);
IF SWITCH4=1 THEN BEGIN
WRITE (LST,'THE CRITICAL VALUE AT .05 (TWO TAILED) IS: ');
WRITELN (LST,CRIT52:5:4);
WRITE (LST,'THE CRITICAL VALUE AT .05 (ONE TAILED) IS: ');
WRITELN (LST,CRIT51:5:4);
WRITE (LST,'THE CRITICAL VALUE AT .01 (TWO TAILED) IS: ');
WRITELN (LST,CRIT12:5:4);
WRITE (LST,'THE CRITICAL VALUE AT .01 (ONE TAILED) IS: ');
WRITELN (LST,CRIT11:5:4);
END;
END
ELSE BEGIN
TVALUE:=(COEFF*SQRT(NUMSAMPS-2))/SQRT(1-SQR(COEFF));
A1:=0.196854;
A2:=0.115194;
A3:=0.000344;
A4:=0.019527;
Y:=1;
TVALUE:=SQR(TVALUE);
DF:=NUMSAMPS-2;
LESSTHANONE:=FALSE;
IF TVALUE<1.0 THEN BEGIN
TVALUE:=1/TVALUE;
TEMP:=Y;
Y:=DF;
DF:=TEMP;
LESSTHANONE:=TRUE;
END;
FACTOR1:=2/(9 * Y);
FACTOR2:=2/(9 * DF);
L:=ABS(REALRAIS(TVALUE,0.333333)*(1-FACTOR2)-1+FACTOR1)/
SQRT((FACTOR1+REALRAIS(TVALUE,0.666667)*FACTOR2));
IF DF<4 THEN L:=L*(1+0.08*INTRAISE(DF,3));
X:=0.25/INTRAISE((1+L*(A1+L*(A2+L*(A3+L*A4)))),4);
IF LESSTHANONE THEN RIGHTTAIL:=1-X
ELSE RIGHTTAIL:=X;
WRITELN ('SIGNIFICANCE = ',RIGHTTAIL:7:6);
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'SIGNIFICANCE = ',RIGHTTAIL:7:6);
END;
END;
END;
PROCEDURE READDATA1;
VAR XFILE:TEXT;
X:REAL;
I,MAXNUM:INTEGER;
FILENAME:STRING[12];
BEGIN
XT:=0;
XS:=0;
YT:=0;
YS:=0;
XY:=0;
WRITE ('ENTER FILE NAME TO CALL THE DATA: ');
READLN (FILENAME);
IF SWITCH4=1 THEN BEGIN
WRITE (LST,'ENTER FILE NAME TO CALL THE DATA: ',FILENAME);
END;
ASSIGN (XFILE,FILENAME);
RESET (XFILE);
READLN (XFILE,X);
READLN (XFILE,X);
MAXNUM:=ROUND(X);
WRITELN ('NUMBER OF PAIRS = ',MAXNUM);
WRITELN ('X MUST BE 0 OR 1');
NUMSAMPS:=MAXNUM;
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'NUMBER OF PAIRS = ',MAXNUM);
WRITELN (LST,'X MUST BE 0 OR 1');
END;
FOR I:=1 TO MAXNUM DO
BEGIN
READLN (XFILE,X);
WRITELN ('ITEM X ',I:4,' = ',X:8:3);
SAMPLE1:=X;
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'ITEM X ',I:4,' = ',X:8:3);
END;
READLN (XFILE,X);
SAMPLE2:=X;
WRITELN (' ':5,'Y ',I:4,' = ',X:8:3);
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,' ':5,'Y ',I:4,' = ',X:8:3);
END;
XT:=XT+SAMPLE1;
XS:=XS+SQR(SAMPLE1);
YT:=YT+SAMPLE2;
YS:=YS+SQR(SAMPLE2);
XY:=XY+(SAMPLE1)*(SAMPLE2);
END;
CLOSE (XFILE);
END;
PROCEDURE READDATA;
BEGIN
XT:=0;
XS:=0;
YT:=0;
YS:=0;
XY:=0;
WRITE ('NUMBER OF PAIRS = ');
READLN (NUMSAMPS);
WRITELN ('X MUST BE 1 OR 0');
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'NUMBER OF PAIRS = ',NUMSAMPS);
WRITELN (LST,'X MUST BE 1 OR 0');
END;
FOR I:=1 TO NUMSAMPS DO
BEGIN
WRITE ('INPUT PAIR ',I:3,' X = ');
READLN (SAMPLE1);
WRITE (' ':15,'Y = ');
READLN (SAMPLE2);
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'INPUT PAIR ',I:3,' X = ',SAMPLE1:8:3);
WRITELN (LST,' ':15,'Y = ',SAMPLE2:8:3);
END;
XT:=XT+SAMPLE1;
XS:=XS+SQR(SAMPLE1);
YT:=YT+SAMPLE2;
YS:=YS+SQR(SAMPLE2);
XY:=XY+(SAMPLE1)*(SAMPLE2);
END;
END;
BEGIN
REPEAT
WRITELN ('POINT BISERIAL CORRELATION');
WRITE ('DO YOU WANT A PRINTOUT (Y/N)');
READLN (SWITCH3);
IF SWITCH3='Y' THEN SWITCH4:=1;
IF SWITCH3='y' THEN SWITCH4:=1;
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'POINT BISERIAL CORRELATION');
END;
WRITE ('DO YOU WISH DISK ENTRY?');
READLN (SWITCH13);
IF SWITCH13='Y' THEN SWITCH14:=1;
IF SWITCH13='y' THEN SWITCH14:=1;
IF SWITCH14<>1 THEN READDATA;
IF SWITCH14=1 THEN READDATA1;
T1:=(NUMSAMPS*XY)-(XT*YT);
T2:=(NUMSAMPS*XS)-SQR(XT);
T3:=(NUMSAMPS*YS)-SQR(YT);
COEFF:=T1/SQRT(T2*T3);
WRITELN ('POINT BISERIAL CORRELATION = ',COEFF:7:6);
IF SWITCH4=1 THEN BEGIN
WRITELN (LST,'POINT BISERIAL CORRELATION = ',COEFF:7:6);
END;
FINDCRITICALVALUES (NUMSAMPS-2);
WRITE ('DO YOU WANT ANOTHER RUN, (Y/N): ');
READLN (C);
WHILE NOT (C IN ['Y','y','n','N']) DO
BEGIN
WRITE ('TYPE Y FOR YES, OR N FOR NO: ');
READLN (C)
END;
SWITCH2:=C IN ['N','n'];
UNTIL SWITCH2
END.